The present invention pertains to hardware verification. More particularly, the present invention relates to verifying configurable hardware.
xe2x80x9cConfigurable hardwarexe2x80x9d or xe2x80x9cparameterized hardwarexe2x80x9d describes hardware systems that are customized automatically at design creation time by using specified values for a set of parameters or attributes. Such hardware may also support changes at run-time depending on parameter settings. Configurable hardware systems typically provide better performance than software running on a general-purpose computer system and greater flexibility than conventional application specific integrated circuits (ASICs) without increasing circuit size and cost.
In conventional hardware systems, it is necessary to verify a system""s functionality by testing the system and its components. Typically, the complexity of verifying a system""s functionality increases with the number of components that make up the system. Therefore, the conventional approach is to manually verify each unit individually and then to assemble the xe2x80x9cknown good unitsxe2x80x9d into a system. If hardware is hierarchically arranged, verification must be performed for each level in the hierarchy. If each individual unit has been verified before assembling the system, verifying system functionality can focus on potential problem with interactions between components rather than on each component""s capabilities.
Configurable hardware systems can be verified using this type of convention hierarchical decomposition. However, because each instance of a configurable hardware system is different, each time a configuration parameter is modified, the system and its components must be manually verified. The cost of repeatedly manually verifying a system and its components often offsets the advantages of configurable hardware.
The present invention includes a method and apparatus for decomposing and verifying configurable hardware. In one embodiment, the method includes automatically decomposing a hardware system into a set of one or more units, creating a test-bench for each of the set of units, and verifying each of the set of units before verifying the hardware system design.